/**
 * 日志级别配置
 */

// 日志级别
const validLevels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];

const levelPriority = {
  trace: 0,
  debug: 1,
  info: 2,
  warn: 3,
  error: 4,
  fatal: 5,
};

/**
 * 匹配日志级别
 * @param {string} inputLevel 输入的日志级别
 * @returns {string} 匹配后的标准日志级别
 */
function matchLogLevel(inputLevel) {
  if (validLevels.includes(inputLevel)) return inputLevel;

  const firstChar = inputLevel?.charAt(0).toLowerCase();
  for (const level of validLevels) {
    if (level.charAt(0) === firstChar) {
      return level;
    }
  }

  // 根据环境变量或NODE_ENV确定默认日志级别
  const envLevel = process.env.LOG_LEVEL?.toLowerCase();
  if (envLevel && validLevels.includes(envLevel)) {
    return envLevel;
  }

  // 根据NODE_ENV设置默认级别
  const nodeEnv = process.env.NODE_ENV?.toLowerCase();
  if (nodeEnv === 'development') {
    return 'debug';
  }

  // 默认生产环境级别
  return 'info';
}

module.exports = {
  validLevels,
  levelPriority,
  matchLogLevel
};